Avoid to use branch instruction(BIT)

    조건 분기 명령 피하기
현대의 프로세스는 여러가지 복잡한 방법들을 사용한다.(파이프 라인, 멀티 쓰레드, …)
이를 사용하기 위해서 추론적 실행(speculative execution)을 한다.
조건 분기 명령을 사용하면 복잡해지기 때문에 이를 최소한으로 사용하는 것이 좋다.
bit_counter(INC)
mov bl,0
mov ecx,32 ;ecx
count_loop:
shl eax,1
jnc skip_inc ;if CF==0, skip_inc
inc bl
skip_inc:
loop count_loop
bit_counter(ADC)
mov bl,0
mov ecx,32
count_loop:
shl eax,1 ;CF
adc bl,0 ; bl
loop counter_loop
위 두 소스들은 둘 다 EAX register의 켜저있는 bit 수를 세는 소스들이다.
하지만 아래 bit_counter(ADC) 코드는 ADC 명령어를 이용하여
bit_counter(INC) 코드에서 INC 명령어를 피하기 위한 branch instruction 사용을 줄였다.
    SETxx
setxx 명령은 특별한 경우에서 분기를 이용하지 않을 수 있는 방법을 제공한다.
setxx는 FLAGS의 상태에 따라 바이트 레지스터나 메모리의  값을 0 or 1 로 바꾸어 준다.
SETxx의 조건이 참이라면 그 결과는 1, 거짓이면 0이 저장된다.
setz al ;Z 1, 0 al
이를 이용하여 분기명령을 최소한으로 사용한 최대값을 찾는 소스 코드
max.asm